package com.winai.launcher.base.db;

import java.util.HashMap;

//数据库封装
public class DBDef {

    //sqlite 为内存型数据库，一般记录内容不多，不要在小表上创建索引
    // 数据库文件默认路径 data/data/<`package_name>/database/    ，如果要更改路径，需要先建立文件

    //数据库查询结果记录
    static public class DBQueryResult{
        private HashMap< String ,Object > mQueryResult=new HashMap<>();

        @SuppressWarnings("unchecked")
        public <T extends Object> T get(String key){
            return (T) mQueryResult.get(key);
        }

        public void set(String key,Object o){
            mQueryResult.put(key,o);
        }
    }

    public static StringBuilder startKeyDef(String stable){
        StringBuilder ss=new StringBuilder();
        ss.append("CREATE TABLE IF NOT EXISTS "+stable +"(id INTEGER PRIMARY KEY AUTOINCREMENT ");//每个表都有一个自动增长的主键id
        return ss;
    }

    public static String dropString(String stable){
        return "DROP TABLE IF EXISTS "+stable;
    }

    //将key 和 类型绑定起来，避免写错，写掉
    public static String keyDef(StringBuilder ss,String key,String type){
        ss.append(","+key+" "+type);
        return key;
    }

    public static String endKeyDef(StringBuilder ss){
        ss.append(")");
        return ss.toString();
    }

    ///////////////////////////////数据类型封装 亲和性 (用到的时候再加)
    //整数类型 (不设立 smallint 等 可以使用 chars 1)
    public static String integer(){
        return "INTEGER";
    }

    public static String bigint(){
        return "BIGINT";
    }

    public static String real(){
        return "REAL";
    }

    public static String chars(int n){
        return "CHAR("+n+")";
    }

    public static String varchar(int n){
        return "VARCHAR("+n+")";
    }

    public static String text(){
        return "TEXT";
    }

    public static String bin(){
        return "BLOB";
    }





}
